package org.atlantis.grosbeak.logger;

import org.atlantis.grosbeak.plugin.BasePluginEngine;

/**
 * Logger的工厂类。用以获取Logger。<br>
 * 获取Log Adapter的优先级是：<br>
 * <ol>
 * <li>Log4j</li>
 * <li>JDK</li>
 * <li>System</li>
 * </ol>
 * 首先查找系统中有没有Log4j及其配置文件，如果有则使用Log4j作为日志记录。如果没有，则再查找
 * 是否有JDK的Logger及其配置文件。如果有，则使用JDK中的Logger作为日志记录。如果还没有，则使用
 * System.out或System.err来把信息输出到控制台上。
 * 
 * @author <a href="mailto:seenoevil.cn@gmail.com">SeeNoEvil</a>
 * 
 */
public class LoggerFactory {

	private static LoggerAdapter adapter;

	static {
		adapter = new BasePluginEngine<LoggerAdapter>(
				"org.atlantis.grosbeak.logger.adapter.Log4jAdapter",
				"org.atlantis.grosbeak.logger.adapter.JdkLoggerAdapter",
				"org.atlantis.grosbeak.logger.adapter.SystemLoggerAdapter")
				.get();
	}

	public static Logger getLogger(Class<?> clazz) {
		return getLogger(clazz.getName());
	}

	public static Logger getLogger(String className) {
		return adapter.getLogger(className);
	}
}
